home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2001 December / pcwk12201b.iso / Wersje pelne i specjalne / Winamp 2.77 i 3.0beta / wasabi-sdk_beta1.exe / jnetlib / sercon.h < prev    next >
C/C++ Source or Header  |  2001-10-08  |  3KB  |  93 lines

  1. /*
  2.  
  3.   Nullsoft WASABI Source File License
  4.  
  5.   Copyright 1999-2001 Nullsoft, Inc.
  6.  
  7.     This software is provided 'as-is', without any express or implied
  8.     warranty.  In no event will the authors be held liable for any damages
  9.     arising from the use of this software.
  10.  
  11.     Permission is granted to anyone to use this software for any purpose,
  12.     including commercial applications, and to alter it and redistribute it
  13.     freely, subject to the following restrictions:
  14.  
  15.     1. The origin of this software must not be misrepresented; you must not
  16.        claim that you wrote the original software. If you use this software
  17.        in a product, an acknowledgment in the product documentation would be
  18.        appreciated but is not required.
  19.     2. Altered source versions must be plainly marked as such, and must not be
  20.        misrepresented as being the original software.
  21.     3. This notice may not be removed or altered from any source distribution.
  22.  
  23.  
  24.   Brennan Underwood
  25.   brennan@nullsoft.com
  26.  
  27. */
  28.  
  29. /*
  30. ** JNetLib
  31. ** Copyright (C) 2000-2001 Nullsoft, Inc.
  32. ** Author: Justin Frankel
  33. ** File: sercon.h
  34. ** License: see jnetlib.h
  35. **
  36. */
  37.  
  38. #ifndef _SERCON_H_
  39. #define _SERCON_H_
  40.  
  41. class JNL_SerCon
  42. {
  43.   public:
  44.  
  45.     JNL_SerCon(int sendbufsize=8192, int recvbufsize=8192);
  46.     ~JNL_SerCon();
  47.  
  48.     void connect(char *device);
  49.  
  50.     void run(int max_send_bytes=-1, int max_recv_bytes=-1, int *bytes_sent=NULL, int *bytes_rcvd=NULL);
  51.     int get_error() { return m_err; } // 1 on error, 2 on no connection, 0 on connected
  52.     char *get_errstr() { return m_errorstr; }
  53.  
  54.     void close();
  55.     void flush_send(void) { m_send_len=m_send_pos=0; }
  56.  
  57.     int send_bytes_in_queue(void);
  58.     int send_bytes_available(void);
  59.     int send(char *data, int length); // returns -1 if not enough room
  60.     int send_string(char *line);      // returns -1 if not enough room
  61.  
  62.     int recv_bytes_available(void);
  63.     int recv_bytes(char *data, int maxlength); // returns actual bytes read
  64.     unsigned int recv_int(void);
  65.     int recv_lines_available(void);
  66.     int recv_line(char *line, int maxlength); // returns 0 if the line was terminated with a \r or \n, 1 if not.
  67.                                               // (i.e. if you specify maxlength=10, and the line is 12 bytes long
  68.                                               // it will return 1. or if there is no \r or \n and that's all the data
  69.                                               // the connection has.)
  70.     int peek_bytes(char *data, int maxlength); // returns bytes peeked
  71.  
  72.   
  73.   protected:
  74.     int  m_file;
  75.     char *m_recv_buffer;
  76.     char *m_send_buffer;
  77.     int m_recv_buffer_len;
  78.     int m_send_buffer_len;
  79.  
  80.     int  m_recv_pos;
  81.     int  m_recv_len;
  82.     int  m_send_pos;
  83.     int  m_send_len;
  84.  
  85.     int m_err;
  86.     char *m_errorstr;
  87.  
  88.     int getbfromrecv(int pos, int remove); // used by recv_line*
  89.  
  90. };
  91.  
  92. #endif // _SERCON_H_
  93.